#ifndef MYLIB_DRIVER_BOARD_H
#define MYLIB_DRIVER_BOARD_H

#include <mylib/mylib_config.h>

///////////////////////////////////////////////////////////////////////////////
// gpio

#ifdef HAL_GPIO_MODULE_ENABLED

#include <mylib/driver/gpio.h>

// 设置PC13为输入
// gpio_direction_input(PC13);
// 设置PC13为输出
// gpio_direction_output(PC13, 1);
// 设置PC13输出低电平
// gpio_set_value(PC13, 0);
// 读取PC13的值
// gpio_get_value(PC13);

#define PA0 (GPIO_A+0)
#define PA1 (GPIO_A+1)
#define PA2 (GPIO_A+2)
#define PA3 (GPIO_A+3)
#define PA4 (GPIO_A+4)  
#define PA5 (GPIO_A+5) 
#define PA6 (GPIO_A+6)
#define PA7 (GPIO_A+7)
#define PA8 (GPIO_A+8)
#define PA9 (GPIO_A+9)
#define PA10 (GPIO_A+10)
#define PA11 (GPIO_A+11)
#define PA12 (GPIO_A+12)
#define PA13 (GPIO_A+13)
#define PA14 (GPIO_A+14)
#define PA15 (GPIO_A+15)

#define PB0 (GPIO_B+0)
#define PB1 (GPIO_B+1)
#define PB2 (GPIO_B+2)
#define PB3 (GPIO_B+3)
#define PB4 (GPIO_B+4)
#define PB5 (GPIO_B+5)
#define PB6 (GPIO_B+6)
#define PB7 (GPIO_B+7)
#define PB8 (GPIO_B+8)
#define PB9 (GPIO_B+9)
#define PB10 (GPIO_B+10)
#define PB11 (GPIO_B+11)
#define PB12 (GPIO_B+12)
#define PB13 (GPIO_B+13)
#define PB14 (GPIO_B+14)
#define PB15 (GPIO_B+15)

#define PC0 (GPIO_C+0)
#define PC1 (GPIO_C+1)
#define PC2 (GPIO_C+2)
#define PC3 (GPIO_C+3)
#define PC4 (GPIO_C+4)
#define PC5 (GPIO_C+5)
#define PC6 (GPIO_C+6)
#define PC7 (GPIO_C+7)
#define PC8 (GPIO_C+8)
#define PC9 (GPIO_C+9)
#define PC10 (GPIO_C+10)
#define PC11 (GPIO_C+11)
#define PC12 (GPIO_C+12)
#define PC13 (GPIO_C+13)
#define PC14 (GPIO_C+14)
#define PC15 (GPIO_C+15)

#define PD0 (GPIO_D+0)
#define PD1 (GPIO_D+1)

#endif // HAL_GPIO_MODULE_ENABLED

///////////////////////////////////////////////////////////////////////////////
// uart

#include <mylib/driver/uart.h>

// 把uart绑定到hal库的uart句柄
void uart_bind(uint32_t uart,void* huart);

///////////////////////////////////////////////////////////////////////////////
// i2c

#ifdef HAL_I2C_MODULE_ENABLED

#include <mylib/driver/i2c.h>

// 把i2c绑定到hal库的i2c句柄
void i2c_bind(uint32_t i2c,void* hi2c);

#endif // HAL_I2C_MODULE_ENABLED

///////////////////////////////////////////////////////////////////////////////
// spi

#ifdef HAL_SPI_MODULE_ENABLED

#include <mylib/driver/spi.h>

// 把spi绑定到hal库的spi句柄
void spi_bind(uint32_t spi,void* hspi);

#endif // HAL_SPI_MODULE_ENABLED

///////////////////////////////////////////////////////////////////////////////
// exti

#include <mylib/driver/exti.h>

///////////////////////////////////////////////////////////////////////////////
// tim

#include <mylib/driver/tim.h>

///////////////////////////////////////////////////////////////////////////////
// adc

#include <mylib/driver/adc.h>

///////////////////////////////////////////////////////////////////////////////
// pwm

#include <mylib/driver/pwm.h>

///////////////////////////////////////////////////////////////////////////////
// delay

#include <mylib/driver/delay.h>

///////////////////////////////////////////////////////////////////////////////
// flash

#ifdef HAL_FLASH_MODULE_ENABLED

#include <mylib/driver/flash.h>

#endif // !HAL_FLASH_MODULE_ENABLED

///////////////////////////////////////////////////////////////////////////////
// soft_i2c

#include <mylib/driver/soft_i2c.h>

///////////////////////////////////////////////////////////////////////////////
// soft_spi

#include <mylib/driver/soft_spi.h>

#endif   // !MYLIB_DRIVER_BOARD_H
